package com.winchain.provider.expiration.service;

import com.shell.bee.persistence.model.PageLimit;
import com.shell.bee.persistence.service.PersistentService;
import com.winchain.chainbill.bill.base.po.CbRec;
import com.winchain.provider.expiration.po.CbDebit;
import com.winchain.provider.expiration.vo.BatchStats;
import com.winchain.provider.expiration.vo.CbDebitQueryVo;
import com.winchain.provider.expiration.vo.CbDebitVo;
import com.winchain.provider.expiration.vo.PaymentStatsQueryVo;
import com.winchain.provider.expiration.vo.PaymentStatsVo;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public abstract interface CbDebitService extends PersistentService<CbDebit> {
	public abstract List<CbDebit> selectDebitBill(String paramString1, String paramString2, String... paramVarArgs);

	public abstract int updateSecurityBankAcct(String paramString1, String paramString2, String paramString3,
			String paramString4);

	public abstract CbDebit saveBillDebit(CbRec paramCbRec, String paramString, boolean paramBoolean);

	public abstract CbDebit selectAndLockByKey(String paramString);

	public abstract List<String> pmt(CbDebit paramCbDebit, String paramString);

	public abstract String resQuota(List<CbDebit> paramList);

	public abstract void sendExpDebitMessage(String paramString1, String paramString2, List<CbDebit> paramList);

	public abstract void sendExpDebitFailedMessage(CbDebit paramCbDebit);

	public abstract List<CbDebitVo> selectDebitAbnormalList(PageLimit paramPageLimit,
			CbDebitQueryVo paramCbDebitQueryVo);

	public abstract List<CbDebitVo> selectDebitList(PageLimit paramPageLimit, CbDebitQueryVo paramCbDebitQueryVo);

	public abstract BatchStats<String> reDebit(String[] paramArrayOfString);

	public abstract BatchStats<String> disburse(String[] paramArrayOfString);

	public abstract BatchStats<String> offlineProcess(String[] paramArrayOfString);

	public abstract BatchStats<String> confirmDebit(String[] paramArrayOfString, String paramString1,
			String paramString2, BigDecimal paramBigDecimal1, BigDecimal paramBigDecimal2, String paramString3);

	public abstract List<CbDebit> selectOverdueDebit(String paramString);

	public abstract List<PaymentStatsVo> queryDebitStatsList(PageLimit paramPageLimit,
			PaymentStatsQueryVo paramPaymentStatsQueryVo);

	public abstract Map<String, BigDecimal> sumDebitStatsList(PaymentStatsQueryVo paramPaymentStatsQueryVo);

	public abstract List<CbDebitVo> selectDebitCashList(PageLimit paramPageLimit, CbDebitQueryVo paramCbDebitQueryVo);

	public abstract Map<String, String> getCashMap(String paramString);

	public abstract boolean enoughBalance(CbDebit paramCbDebit, String paramString);

	public abstract String getGrpIdByDebitId(String paramString);
}
